package Model;


/**
 * Modele: une grille est un ensemble de case
 * @author smabrouk
 * une case est definie lintesection d'une ligne et d'une colonne
 */
public class Position {
	/**
	 * le numero de la colonne correspondant à la case
	 */
	public int numX;
	
	/**
	 * la numerode la ligne correspondant à la case
	 */
	public int numY;
	/**
	 * la couleur de la position
	 * color = -1 : rien 
	 * color =0 position neutre
	 * color =1 zone rouge
	 * color =2 zone noire
	 */
	public int color;
	
	/**
	 * le credit necessaire à avoir pour conquérir la position
	 */
	public int credit;
	
	/**
	 * ce boolean indique qu'un agent veut deja conquerir 
	 * la position
	 * gestion de la synchronisation
	 */
	private boolean reserve;
	
	
	public Position(int x, int y,int c, int cr){
		this.numX=x;
		this.numY=y;
		this.color=c;
		this.credit=cr;
		this.reserve=false;
	}
	
	public Position(int x,int y){
		this.numX = x;
		this.numY=y;
		this.color = -1;
		this.credit = 0;
		this.reserve=false;
	}
	
	public int getnumX(){
		return this.numX;
	}
	
	public int getnumY(){
		return this.numY;
	}
	
	public int getColor(){
		return this.color;
	}
	
	public void setColor(int c){
		this.color=c;
	}
	
	public int getCredit(){
		return this.credit;
	}
	
	public void setCredit(int c){
		this.credit=c;
	}
	
	public void setnumX(int x){
		this.numX=x;
	}
	
	public void setnumY(int y){
		this.numY=y;
	}
	
	public void posGauche(){
		this.numX++;
		
	}
	
	public void posDroite(){
		this.numX--;
	}
	
	public void posHaut(){
		this.numY++;
	}
	
	public void posDiagHDroite(){
		this.numX--;
		this.numY--;
	}
	
	public void posDiagBDroite(){
		this.numX--;
		this.numY++;
	}
	
	public void posDiagHGauche(){
		this.numX++;
		this.numY--;
	}
	
	public void posDiagBGauche(){
		this.numX++;
		this.numY++;
	}
	
	public synchronized boolean getReserved(){
		return this.reserve;
	}
	
	public synchronized void setReserved(boolean r){
		this.reserve=r;
	}
	
	
}
